enum Direction {
    Up = 1,
    Down,
    Left,
    Right
}

// 编译有问题
// enum FileAccess {
//     // constant members
//     None,
//     Read    = 1 << 1,
//     Write   = 1 << 2,
//     ReadWrite  = Read | Write
//     // computed member
//     G = "123".length
// } 


// 枚举是在运行时真正存在的一个对象。 其中一个原因是因为这样可以从枚举值到枚举名进行反向映射
// enum Enum {
//     A
// }
// let a = Enum.A;
// let nameOfA = Enum[Enum.A]; // "A"
// console.log(nameOfA);

//  常数枚举
const enum Enum {
    A = 1,
    B = A * 2
}
var  enu = [Enum.A, Enum.B];

const enum Directions {
    Up,
    Down,
    Left,
    Right
}

let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right]


// 外部枚举
declare enum Eoo {
    A = 1,
    B,
    C = 2
}


